]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
fileUtils: Don't collect files as `dir`
authorFlorian Müllner <fmuellner@gnome.org>
Fri, 23 May 2025 22:30:16 +0000 (00:30 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Sat, 24 May 2025 00:43:29 +0000 (02:43 +0200)
The method collects the children of subdirectories, regardless of
the children's file types.

It is therefore odd to return files as `dir`, in particular as the
method is indeed used to collect plain files (session modes and
search providers) as well as directories (installed extensions and
extension updates).

Change the returned objects to return files as `file`, which
works for both regular files and directories.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3721>

js/misc/fileUtils.js
js/ui/extensionSystem.js
js/ui/remoteSearch.js
js/ui/sessionMode.js

index bff53eaebb2b020e29ccd5b971efc833b3cefea9..cbbeac85e46b0732e4a6eca0a922033a15157042 100644 (file)
@@ -4,16 +4,16 @@ import Gio from 'gi://Gio';
 export {loadInterfaceXML} from './dbusUtils.js';
 
 /**
- * @typedef {object} SubdirInfo
- * @property {Gio.File} dir the file object for the subdir
- * @property {Gio.FileInfo} info the file descriptor for the subdir
+ * @typedef {object} ChildInfo
+ * @property {Gio.File} file the file object for the child
+ * @property {Gio.FileInfo} info the file descriptor for the child
  */
 
 /**
  * @param {string} subdir the subdirectory to search within the data directories
  * @param {boolean} includeUserDir whether the user's data directory should also be searched in addition
  *                                 to the system data directories
- * @returns {Generator<SubdirInfo, void, void>} a generator which yields file info for subdirectories named
+ * @returns {Generator<ChildInfo, void, void>} a generator which yields child infos for subdirectories named
  *                                              `subdir` within data directories
  */
 export function* collectFromDatadirs(subdir, includeUserDir) {
@@ -35,7 +35,7 @@ export function* collectFromDatadirs(subdir, includeUserDir) {
         if (fileEnum != null) {
             let info;
             while ((info = fileEnum.next_file(null)))
-                yield {dir: fileEnum.get_child(info), info};
+                yield {file: fileEnum.get_child(info), info};
         }
     }
 }
index 008f01c64de32dba64a6bae9afac2e0764082afd..f12ee07a334ec8de1233a9f5cd69c82410c101ca 100644 (file)
@@ -656,7 +656,7 @@ export class ExtensionManager extends Signals.EventEmitter {
         if (!this.updatesSupported)
             return;
 
-        for (const {dir, info} of FileUtils.collectFromDatadirs('extension-updates', true)) {
+        for (const {file: dir, info} of FileUtils.collectFromDatadirs('extension-updates', true)) {
             let fileType = info.get_file_type();
             if (fileType !== Gio.FileType.DIRECTORY)
                 continue;
@@ -707,7 +707,7 @@ export class ExtensionManager extends Signals.EventEmitter {
 
         const includeUserDir = global.settings.get_boolean('allow-extension-installation');
         const extensionFiles = [...FileUtils.collectFromDatadirs('extensions', includeUserDir)];
-        const extensionObjects = extensionFiles.map(({dir, info}) => {
+        const extensionObjects = extensionFiles.map(({file: dir, info}) => {
             let fileType = info.get_file_type();
             if (fileType !== Gio.FileType.DIRECTORY)
                 return null;
index ae582f194a43c36437b7fba568fa3602045d571b..dbd0494ec2d47baf282ea99ca62f4f85eae9d6e3 100644 (file)
@@ -140,8 +140,8 @@ export function loadRemoteSearchProviders(searchSettings) {
     if (searchSettings.get_boolean('disable-external'))
         return [];
 
-    for (const {dir} of FileUtils.collectFromDatadirs('search-providers', false))
-        loadRemoteSearchProvider(dir);
+    for (const {file} of FileUtils.collectFromDatadirs('search-providers', false))
+        loadRemoteSearchProvider(file);
 
     let sortOrder = searchSettings.get_strv('sort-order');
 
index 6c2a15ee00f22429183260166d5600e2c2c18490..10cf30709bfd8cfd5c418e567b159f458c49727a 100644 (file)
@@ -130,8 +130,8 @@ function _loadMode(file, info) {
  * Loads external session modes from the system data directories.
  */
 function _loadModes() {
-    for (const {dir, info} of FileUtils.collectFromDatadirs('modes', false))
-        _loadMode(dir, info);
+    for (const {file, info} of FileUtils.collectFromDatadirs('modes', false))
+        _loadMode(file, info);
 }
 
 export function listModes() {